Conventional systems implement firmware as an important code to control activities of a RAID controller most of the time. The firmware controls activities such as creating, deleting, modifying and scanning a configuration detail during a boot sequence. If an error occurs during the execution of the firmware (i.e., crashing, code breaking, etc.) a conventional RAID controller will stop functioning properly, and the controller will have down time. During such down time, an end user will be unable to access data from the storage device. The RAID controller will need to be updated (or flashed) with the firmware on the same RAID controller in the case of firmware failure. The RAID controller will need to be replaced in the case of a firmware flash chip failure.
RAID controllers are used in several locations including mission critical/scientific computation, banking, data storage and computation, the educational sector, etc. The implementation of a RAID controller depends upon end user requirements and configuration of the RAID controller based on high throughput and/or redundancy. A combination of the end user requirements and configuration of the RAID controller also determines whether a RAID controller is implemented. Currently, if the firmware of the controller becomes corrupted, a greater downtime will result to the end user regardless of the application and configuration of the RAID controller. This situation can be handled either by upgrading the firmware in the faulty RAID controller or by changing in a new RAID controller. The upgrading or changing of the RAID controller will result in more down time at the customer end.
Disadvantages of conventional approaches include (i) greater down time when the firmware crashes and/or the firmware flash chip fails, (ii) if the firmware fails then a field engineer (or customer) has to update the firmware, (iii) the need to spend money to replace the RAID controller in the case of a firmware flash chip failure, (iv) operation being halted in terms of days (i.e., at least a partial day) in the case of firmware crash and/or firmware flash chip failure, (v) if power failure happens while firmware flashing, then the controller may not work, and/or (vi) a mandatory physical dealing in the system and RAID controller in case of firmware crash and/or firmware flash chip failure.
It would be desirable to implement a method and/or apparatus for implementing firmware recovery in a RAID controller by using a dual firmware implementation.